import { sm4 as SM4 } from 'gm-crypt'
const pwdKey = 'dd5818b3fe4742df' // 密钥 前后端一致即可,后端提供
const sm4Config = {
  key: pwdKey, // key值要与后端的一致，后端解密是根据这个key
  mode: 'ecb', // 加密的方式有两种，ecb和cbc两种，也是看后端如何定义的，cbc的话下面还要加一个iv的参数，ecb不用
  cipherType: 'utf-8'
}

/*
 * 加密工具函数
 * @param {String} text 待加密文本
 * @param key string 加密key(16位)
 * @param iv string 偏移向量(16位)
 */
export function SM4Encrypt(text, key = pwdKey) {
  sm4Config.key = key
  const sm4Util = new SM4(sm4Config) // new一个sm4函数，将sm4Config作为参数传递进去
  return sm4Util.encrypt(text, key)
}

/*
 * 解密工具函数
 * @param {String} text 待解密密文
 * @param key string 加密key(16位)
 * @param iv string 偏移向量(16位)
 */
export function SM4Decrypt(text, key = pwdKey) {
  sm4Config.key = key
  const sm4Util = new SM4(sm4Config) // new一个sm4函数，将sm4Config作为参数传递进去
  return sm4Util.decrypt(text, key)
}
